package com.onlinescxhz.demo.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.onlinescxhz.demo.controller.lipojo.LsGoodsSKU;
import com.onlinescxhz.demo.controller.lipojo.LsSPUSKU;
import com.onlinescxhz.demo.pojo.GoodsSKU;
import com.onlinescxhz.demo.pojo.GoodsSPU;
import com.onlinescxhz.demo.service.GoodsSKUServiceImpl;
import com.onlinescxhz.demo.service.GoodsSPUServiceImpl;
import com.onlinescxhz.demo.utils.SZtostring;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.*;

@RestController
@CrossOrigin
@RequestMapping("/goodsmanager")
public class GoodsManagerController {
    @Resource
    private GoodsSPUServiceImpl goodsSPUService;

    /**
     * 商品管理分页
     * @param pageNum
     * @param pageSize
     * @param id
     * @return
     */
    @GetMapping("/page")
    public IPage<GoodsSPU> findpage(@RequestParam Integer pageNum,
                                    @RequestParam Integer pageSize,
                                    @RequestParam String id,
                                    @RequestParam Integer uid) {
        IPage<GoodsSPU> page = new Page<>(pageNum, pageSize);
        QueryWrapper<GoodsSPU> queryWrapper = new QueryWrapper<>();

            queryWrapper.like("id", id);
            queryWrapper.eq("uid", uid);

        return goodsSPUService.page(page, queryWrapper);
    }
    @Resource
    private GoodsSKUServiceImpl goodsSKUService;

    /**
     * 通过spu  id 查询 sku
     * @param id
     * @return
     */
    @GetMapping("/sku")
    public List<GoodsSKU> findByspuid(@RequestParam Integer id){
        System.out.println(id);
        QueryWrapper<GoodsSKU> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("spuid", id);
        List<GoodsSKU> list = goodsSKUService.list(queryWrapper);
        return  list;
    }
//    @PostMapping("/addspu")
//    public boolean addSPU(@RequestBody GoodsSPU goodsSPU){
//        goodsSPU.setId(0);
//        return  goodsSPUService.save(goodsSPU);
//    }

    /**
     * 新增商品
     * @param lsSPUSKU
     * @return
     */
    @PostMapping("/addsku")
    public boolean addSKU(@RequestBody LsSPUSKU lsSPUSKU){
        System.out.println(lsSPUSKU.getGoodsSPU().toString());
        lsSPUSKU.getList().forEach(System.out::println);
        lsSPUSKU.getGoodsSPU().setId(0);
        goodsSPUService.save(lsSPUSKU.getGoodsSPU());
        QueryWrapper<GoodsSPU> queryWrapper = new QueryWrapper<>();
        if (!"".equals(lsSPUSKU.getGoodsSPU().getName())) {
            queryWrapper.eq("name",lsSPUSKU.getGoodsSPU().getName());
        }
        int spuid=  goodsSPUService.getOne(queryWrapper).getId();
        Collection<GoodsSKU> collection= new ArrayList<>();
        for(LsGoodsSKU lsgoodsSKU:lsSPUSKU.getList()){
            System.out.println(lsgoodsSKU);
            //Integer total, double price, String detail, String specs, String describee, String statuss, Integer spuid, Integer id) {
            collection.add(new GoodsSKU(lsgoodsSKU.getTotal(),lsgoodsSKU.getPrice(),lsgoodsSKU.getDetail(), SZtostring.swSZstr(lsgoodsSKU.getSpecs()),lsgoodsSKU.getDescribee(),lsgoodsSKU.getStatuss(),spuid,0));
        }
        collection.forEach(System.out::println);
        goodsSKUService.saveBatch(collection);
        return  true;


    }
    /**
     *  sku by id spu by id
     * 修改商品
     */
    @PostMapping("/updataspusku")
    public boolean updataskuspu(@RequestBody LsSPUSKU lsSPUSKU){
        QueryWrapper<GoodsSPU> spuqueryWrapper = new QueryWrapper<>();
        spuqueryWrapper.eq("id",lsSPUSKU.getGoodsSPU().getId());
        goodsSPUService.update(lsSPUSKU.getGoodsSPU(),spuqueryWrapper);
        for(LsGoodsSKU lsgoodsSKU :lsSPUSKU.getList()){
           QueryWrapper<GoodsSKU> skuqueryWrapper =new QueryWrapper<>();
           GoodsSKU goodsSKU=new GoodsSKU(lsgoodsSKU.getTotal(),lsgoodsSKU.getPrice(),lsgoodsSKU.getDetail(), SZtostring.swSZstr(lsgoodsSKU.getSpecs()),lsgoodsSKU.getDescribee(),lsgoodsSKU.getStatuss(),lsgoodsSKU.getSpuid(),lsgoodsSKU.getId());
           System.out.println(goodsSKU+"wdwdwd");
           skuqueryWrapper.eq("id",goodsSKU.getId());
           goodsSKUService.update(goodsSKU,skuqueryWrapper);
        }
        return true;
    }
    /**
     * 查询所有商品
     * @return
     */
    @PostMapping("/goodslist")
    public List<GoodsSPU> selectGoodss(){

        return  goodsSPUService.list(null);
    }

    /**
     * 通过spu id find spu pku
     * @param id
     * @return
     */
    @PostMapping("/selectbyid")
    public Map<String,Object> selectbyid(@RequestBody Integer id){
        QueryWrapper<GoodsSPU> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("id",id);
        GoodsSPU spu=goodsSPUService.getOne(queryWrapper);
        QueryWrapper<GoodsSKU> queryWrappersku=new QueryWrapper<>();
        queryWrappersku.eq("spuid",spu.getId());
        List<GoodsSKU> listsku=goodsSKUService.list(queryWrappersku);
        Map<String, Object> res= new HashMap<>();
        res.put("spu",spu);
        res.put("sku",listsku);
        return res;
    }

}
